package sf.database.meta;

public interface ITableMapping {
    /**
     * 得到此表对应的模型类。对于基本类型来说，模型类型和容器类型都是一致的。
     * @return 对应的模型类。
     */
    Class<?> getThisType();

    /**
     * 返回class名称
     * @return class名称
     */
    String getName();

    /**
     * 返回class名称Simple
     * @return class Simple名称
     */
    String getSimpleName();

    /**
     * 得到schema名称。 ORM允许用户使用Annotation @Table(schema="S1")
     * 添加在实体类上，指定该实体操作位于特定的schema上。<br>
     * 建模时的schema，在实际运行环境中经过重定向后变为实际部署的数据源名称。<br>
     * @return 重定向后的schema
     */
    String getSchema();


    ColumnMapping findField(String fieldName);

    /**
     * @param fieldName 实体字段
     * @return
     */
    ColumnMapping getStrictCaseDBFieldColumnMapping(String fieldName);

    /**
     * @param fieldName 实体字段
     * @return
     */
    ColumnMapping getIgnoreCaseDBFieldColumnMapping(String fieldName);

    /**
     * @param fieldName java字段名称
     * @return
     */
    ColumnMapping getJavaFieldColumnMapping(String fieldName);

    /**
     * @param columnName 数据库字段名称
     * @return
     */
    ColumnMapping getStrictCaseColumnMapping(String columnName);

    /**
     * 数据库列名
     * @param columnName
     * @return
     */
    ColumnMapping getIgnoreCaseColumnMapping(String columnName);
}
